<%@page import="util.PointFactory"%>
<%@page import="java.util.HashSet"%>
<%@page import="java.util.Set"%>
<%@page import="java.sql.Time"%>
<%@page import="com.vividsolutions.jts.geom.Point"%>
<%@page import="controller.UsuarioController"%>
<%@page import="view.UsuarioBean"%>
<%@page import="controller.EstiloPontoGastronomicoController"%>
<%@page import="view.EstiloPontoGastronomicoBean"%>
<%@page import="controller.TipoPontoGastronomicoController"%>
<%@page import="view.TipoPontoGastronomicoBean"%>
<%@page import="java.util.List"%>
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
   <head>
      <link rel="shortcut icon" href="/img/favicon.png"/>
      <title>GastroMap - Atualizar Perfil de Usuário</title>
      <%@include file="/_include.html"%>
   </head>
   <body>
      <!-- Redirecionamento caso não esteja logado -->
      <%
         if (session.getAttribute("usuario") == null) {
            response.sendRedirect("/index.jsp");
         }
      %>

      <!-- Barra de navegação -->
      <%@include file="/_navbar.jsp" %>

      <div class="container-fluid">
         <div class="container">
            <!-- Título e botão de listagem -->
            <div class="row">
               <div class="span12">
                  <h1>Atualizar Perfil</h1>
               </div>               
            </div>
            <hr/>
            <!-- Entrada do endereço -->
            <div class="row">
               <div class="span12">
                  <label>
                     <strong>Digite um endereço ou clique no mapa para definir sua nova localização padrão.</strong>
                  </label>
                  <input class="input-xxlarge" id="addressInput" name="addressInput" placeholder="Rua ou avenida, número, cidade, estado ou CEP"/>
                  <button id="markButton" class="btn btn-success">
                     <i class="icon-flag icon-white"></i>
                     Marcar ponto
                  </button>
               </div>
            </div>
            <!-- Mapa -->
            <div class="row-fluid">
               <div class="span10">
                  <div id="googleMap">
                  </div>
               </div>
            </div>
            <hr/>
            <!-- Formulário -->
            <div class="row-fluid">
               <h4>Atualize as demais informações de seu perfil.</h4>
               <span class="help-block">* Campos obrigatórios</span>
               <br/>
               <div class="span12">
                  <form method="post" name="form" accept-charset="ISO-8859-1" class="form-horizontal">
                     <fieldset>                        
                        <input type="hidden" id="latitude" name="latitude"/>
                        <input type="hidden" id="longitude" name="longitude"/>                        
                        <div class="control-group  ">
                           <label class="control-label">
                              Tipos preferidos de estabelecimentos *
                           </label>
                           <div class="controls">
                              <select name="tiposPreferidos" multiple="" size="10">                                 
                                 <%
                                    List<TipoPontoGastronomicoBean> listaTipos = new TipoPontoGastronomicoController().recuperar();
                                    for (int i = 0; i < listaTipos.size(); i++) {
                                       out.println("<option value='" + i + "'>" + listaTipos.get(i).getTipo() + "</option>");
                                    }
                                 %>
                              </select>
                           </div>
                        </div>
                        <div class="control-group">
                           <label class="control-label">
                              Especialidades ou estilos preferidos *                              
                           </label>
                           <div class="controls">
                              <select name="estilosPreferidos" multiple="" size="10">
                                 <%
                                    List<EstiloPontoGastronomicoBean> listaEstilos = new EstiloPontoGastronomicoController().recuperar();
                                    for (int i = 0; i < listaEstilos.size(); i++) {
                                       out.println("<option value='" + i + "'>" + listaEstilos.get(i).getEstilo() + "</option>");
                                    }
                                 %>
                              </select>                                  
                           </div>
                        </div>
                        <div class="control-group">
                           <label class="control-label">
                              Distância máxima que você está disposto a percorrer
                           </label>
                           <div class="controls">
                              <input class="input-mini" name="regiaoAbrangencia" type="number" min="0"/>
                              metros                                                          
                           </div>
                        </div>
                        <div class="control-group">
                           <label class="control-label">
                              Gasto médio por ocasião
                           </label>
                           <div class="controls">
                              <input class="input-mini" name="gastoMedio" type="number" min="0"/> 
                              ,00
                           </div>
                        </div>
                     </fieldset>
                     <div class="form-actions">
                        <button type="reset" class="btn btn-danger">
                           <i class="icon-remove icon-white"></i>
                           Limpar
                        </button>
                        <button type="submit" class="btn btn-primary" id="cadastrarUsuario">
                           <i class="icon-ok icon-white"></i>
                           Atualizar Perfil
                        </button>                          
                     </div>
                  </form>
               </div>
            </div>
         </div>
         <!-- Rodapé -->
         <%@include file="/_footer.jsp" %>
      </div>  

      <%
         Point ponto = null;
         TipoPontoGastronomicoBean tipo = null;
         Set<TipoPontoGastronomicoBean> tipos = new HashSet<TipoPontoGastronomicoBean>();
         Set<EstiloPontoGastronomicoBean> estilos = new HashSet<EstiloPontoGastronomicoBean>();


         if (request.getParameter("latitude") != null) {
            String latitudeString = request.getParameter("latitude");
            String longitudeString = request.getParameter("longitude");
            String[] tiposString = request.getParameterValues("tiposPreferidos");
            String[] estilosString = request.getParameterValues("estilosPreferidos");
            String regiaoAbrangenciaString = request.getParameter("regiaoAbrangencia");
            String gastoMedioString = request.getParameter("gastoMedio");



            if (tiposString != null) {
               for (int i = 0; i < tiposString.length; i++) {
                  int index = Integer.parseInt(tiposString[i]);
                  tipos.add(listaTipos.get(index));
               }
            }

            if (estilosString != null) {
               for (int i = 0; i < estilosString.length; i++) {
                  int index = Integer.parseInt(estilosString[i]);
                  estilos.add(listaEstilos.get(index));
               }
            }

            UsuarioBean usuarioSessao = (UsuarioBean) session.getAttribute("usuario");
            UsuarioBean usuario = new UsuarioController().recuperar(usuarioSessao.getId());

            if (!latitudeString.isEmpty()) {
               ponto = PointFactory.create(Double.parseDouble(latitudeString), Double.parseDouble(longitudeString));
               usuario.setGeolocalizacaoPadrao(ponto);
            }

            if (!tipos.isEmpty()) {
               usuario.setTiposPreferidos(tipos);
            }

            if (!estilos.isEmpty()) {
               usuario.setEstilosPreferidos(estilos);
            }

            if (!regiaoAbrangenciaString.isEmpty()) {
               usuario.setRegiaoAbrangencia(Integer.parseInt(regiaoAbrangenciaString));
            } 
            
            if (!gastoMedioString.isEmpty()) {
               usuario.setGastoMedio(Float.parseFloat(gastoMedioString));
            } 

            if (new UsuarioController().atualizar(usuario)) {
               out.println("<script>alert('Atualização do Perfil realizada com sucesso!');</script>");
               usuario.setSenha("");
               session.setAttribute("usuario", usuario);
               out.println("<script>location.href = '/index.jsp';</script>");
            } else {
               out.println("<script>alert('Ocorreu um erro e a atualização falhou!');</script>");
            }
         }
      %>

   </body>
</html>